package com.cn.wanxi.service.impl;

import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.dao.UserDao;
import com.cn.wanxi.dao.impl.UserImpl;
import com.cn.wanxi.service.IUserService;

import java.util.List;

public class UserServiceImpl implements IUserService {

    @Override
    public String add(UserModel userModel) {
//        需要将数据进行存储,存储到数据库也需要一个反馈值，数据库更新的返回值位int
//        如果返回的是1表示成功，0表示失败
//调用数据实现层
//        如果注册失败会有多少种原因？只有用户名存在
        UserDao userDao = new UserImpl();
        UserModel model = userDao.findByUsername(userModel.getUsername());
//        如果if的大括号里面只有一句话，就可以不写大括号
        if (model != null) {
            return "isHave";
        }
        int result = userDao.add(userModel);
// 三元运算符
        return result == 1 ? "success" : "error";
    }

    /**
     * 首先判断验证码是否正确  error-code
     * 如果正确，判断用户名和密码是否输入正确
     * 正确 返回sucdess  错误  error
     *
     * @param userModel
     * @return
     */
    @Override
    public String login(UserModel userModel) {
        if (userModel.getCode().equals(userModel.getSessionCode())) {
            UserDao userDao = new UserImpl();
            UserModel model = userDao.findByUsernameAndPassword(userModel);
            return model == null ? "error" : "success";
        }
        return "error-code";

    }

    @Override
    public List<UserModel> findAll(UserModel userModel) {
        UserDao userDao = new UserImpl();
        return userDao.findAll(userModel);
    }

    @Override
    public UserModel findById(UserModel userModel) {
        UserDao userDao = new UserImpl();
        return userDao.findById(userModel);
    }

    /**
     * 1.判断当前用户名是否已经存在
     * 2.如果存在，则提示重写输入
     * 3.不存在则直接修改数据
     *
     * @param userModel
     * @return
     */
    @Override
    public String update(UserModel userModel) {
        UserDao userDao = new UserImpl();
        UserModel model = userDao.findByUsernameAndNotSelf(userModel);
        if (model == null) {
            return userDao.update(userModel) > 0 ? "success" : "error";
        }
        return "isHave";
    }

    @Override
    public String del(UserModel userModel) {
        UserDao userDao = new UserImpl();
        return userDao.del(userModel) > 0 ? "success" : "error";
    }

    @Override
    public int getCount(UserModel userModel) {
        UserDao userDao = new UserImpl();
        return userDao.getCount(userModel);
    }

//        if (result == 1) {
//            return "success";
//        } else {
//            return "error";
//        }

}
